iT邦幫忙

2025 iThome 鐵人賽

DAY 12
1
AI & Data

動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉系列 第 12

Day 12 - 部署與 CICD,Trino 在雲端 (一)

  • 分享至 

  • xImage
  •  

12

前言

《Trino 地端架設與調參》系列都在介紹如何架設並啟動 地端 的 Trino Cluster 實例。

不過在實際情境中,部署通常不會在地端進行,而是需要一種能滾動調整參數並支援動態部署的方式,才能讓系統更具彈性,能夠因應各種突發狀況。

此外,在開發流程中,也應將環境區分為 測試正式 環境,此時動態部署便扮演著關鍵角色,使開發者能在完成測試後順利將系統部署至正式環境,並確保結果一致且無誤。

因此接下來《部署與CICD,Trino 在雲端》系列將分別講述專案上實際部署時使用的框架、環境切分實作、動態調參方法以及 CI/CD 的腳本執行,讓你的 Trino Cluster 能隨心所欲的任你調整。

Helm Chart

helm chart

因公司使用 K8s 進行部署管理,所以選擇 Helm 作為部署工具。Helm Chart 包含部署所需的所有 K8s Yaml ( 如 Deployment、Service、ConfigMap ) 與設定參數,使我們更便於進行環境切分與版本管理。

使用 Helm Chart 可以做到以下:

  • 使用 .yaml 定義應用 ( 此指 Trino cluster ) 如何部署
  • 使用 values.yaml 進行參數化設定,渲染部署的 .yaml
  • 便於進行環境切分 (一個環境可以有一份 values.yaml )
  • 便於進行版本管理 (可以有很多版本的 values.yaml )
  • 可使用 .sh 腳本進行部署 ( Deployment )

若讀者到這邊還是不清楚也無妨,本文會使用官方提供的 trino chart 模板做一次實際 Trino cluster 的部署參數設定,依序做下去肯定會更加明白使用 Helm Chart 部署的好處。

本文使用的是 Trino 官方的 Helm Chart template,再以 values.yaml 對官方 Helm Chart template 進行渲染後部署,接下來介紹 3 個部署 Trino cluster 會用到的 values.yaml :

  1. trino-elt.yaml
  2. external-secrets.yaml
  3. service-monitor.yaml

設定 Trino Cluster - 基礎設定

因官方提供設定繁不及載,本文僅就專案上有使用到的設定做介紹,首先是集群的基礎設定,包含 Trino cluster 名稱、image 版本、權限以及密碼憑證 ( credentials ) 的設定:

# Trino cluster 名稱,用於區別不同的集群
nameOverride: trino-elt 

# Trino image 設定 (Pull from AWS ECR)
image:
  registry: xxxx.dkr.ecr.ap-southeast-1.amazonaws.com
  repository: sldatacenter/trino-elt
  tag: latest
  pullPolicy: Always

imagePullSecrets: # 沒特別設定

# 環境變數(env)設定 
## 使用 eso (External Secrets Operator)
## 故須與 external-secrets.yaml 一併設定
envFrom:
  - secretRef:
      name: eso-trino-elt-env

# 權限設定
auth:
  # 設定 Trino 將根據群組進行授權
  groups: "true"
  # 儲存密碼驗證的 Secret
  ## 使用 eso (External Secrets Operator)
  ## 故須與 external-secrets.yaml 一併設定
  passwordAuthSecret: eso-trino-elt-configs

再來則是 Server 以及 Catalogs 的設定,這個設定是整個集群共用的,包含 worker 的數量、登入方式、查詢限制以及可連接資料源的 Catalogs 設定 ( 在地端啟動時是使用 .properties 檔做設定 ) :

server:
  ## 設定 worker 數量:3
  workers: 3
  config:
    ## 設定登入方式:帳號密碼
    authenticationType: "PASSWORD"
  ## 啟用 distributed-sort: 每個node都先排序好再merge,增加查詢效能
  ## 限制歷史查詢 query.max-history: 限制可以出現在UI的歷史查詢數量,增加查詢效能
  coordinatorExtraConfig: |
    distributed-sort=true
    query.max-history=50

additionalCatalogs:
  # 設定 bigquery Catalog
  bigquery: |
    connector.name=bigquery
    bigquery.project-id=shopline-test
    bigquery.credentials-file=/secrets/gcp_service_account.json
  # 設定 iceberg Catalog
  iceberg: |
    connector.name=iceberg
    iceberg.file-format=PARQUET
    iceberg.catalog.type=glue # 使用 AWS Glue 作為 metadata catalog
    hive.metastore.glue.region=ap-southeast-1
    hive.metastore.glue.default-warehouse-dir=s3://sldatacenter-trino-development
    fs.native-s3.enabled=true
    s3.region=ap-southeast-1
    iceberg.query-partition-filter-required=true
    iceberg.query-partition-filter-required-schemas=datalakehouse_elt_raw_development,datalakehouse_elt_bronze_development,datalakehouse_elt_silver_development,datalakehouse_elt_gold_development

明日預告

系列文明日《部署與 CICD,Trino 在雲端 (二)》,將延續介紹 Trino Cluster 的核心組成,包括 Coordinator 與 Worker 的配置。這部分的設定可說是整個集群的關鍵,因為它決定了 Trino 所能調度的資源,以及影響效能調校的細節。

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 11 - Trino 地端架設與調參 (五)
下一篇
Day 13 - 部署與 CICD,Trino 在雲端 (二)
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言